import numpy as np

def Getft(Signal):
    if Signal["FFT_len"]%2 == 0:    # 求余
        fft_n = Signal["FFT_len"]/2
        fft_n = int(fft_n)
        v1 = np.linspace(start=-fft_n,stop=fft_n,num=2*fft_n,dtype=float)
        f_re = (Signal["Sampling_rate"]*v1)/Signal["FFT_len"]
    else:
        fft_n = (Signal["FFT_len"]-1)/2
        fft_n = int(fft_n)
        # v2 = np.array([range(0-fft_n, fft_n+1)], dtype=float)
        v2 = np.linspace(start=-fft_n,stop=fft_n,num=2*fft_n,dtype=float)
        f_re = (Signal["Sampling_rate"]*v2)/Signal["FFT_len"]
    ft = np.reshape(f_re, len(f_re))
    return ft


if __name__ == '__main__':
    Signal={}
    Signal["FFT_len"]=2 ** 16*4
    Signal["Sampling_rate"]= 10e9 * 4
    ft=Getft(Signal)
    print(f'ft : {ft}')
    print(f'len(ft){len(ft)}')